b67da6
@@ -373,6 +373,9 @@
public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport imp
 				return !BeanFactoryUtils.isFactoryDereference(name);
 			}
 		}
+		else if (containsSingleton(beanName)) {
+			return true;
+		}
 
 		else {
 			// No singleton instance found -> check bean definition.
@@ -465,6 +468,10 @@
public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport imp
 						typeToMatch.isAssignableFrom(beanInstance.getClass());
 			}
 		}
+		else if (containsSingleton(beanName) && !containsBeanDefinition(beanName)) {
+			// null instance registered
+			return false;
+		}
 
 		else {
 			// No singleton instance found -> check bean definition.
@@ -524,6 +531,10 @@
public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport imp
 				return beanInstance.getClass();
 			}
 		}
+		else if (containsSingleton(beanName) && !containsBeanDefinition(beanName)) {
+			// null instance registered
+			return null;
+		}
 
 		else {
 			// No singleton instance found -> check bean definition.
@@ -860,6 +871,10 @@
public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport imp
 		if (beanInstance != null) {
 			return (beanInstance instanceof FactoryBean);
 		}
+		else if (containsSingleton(beanName)) {
+			// null instance registered
+			return false;
+		}
 
 		// No singleton instance found -> check bean definition.
 		if (!containsBeanDefinition(beanName) && getParentBeanFactory() instanceof ConfigurableBeanFactory) {
